package demo02_oop

/**
 * 1.定义class类
 *   java中定义
 *      public class 类名 {
 *        属性
 *        方法
 *      }
 * 2.使用class
 *   与java完全一致，需要创建类的实例化对象，通过点属性和方法的形式调用
 *
 * scala 中的类
 *  1，可以定义类参数
 *  2. 在类参数的前面加 val 或 var 类参数就变成了类属性。区别就是 类属性可以用类的实例化对象点出来
 *
 * 构造器
 *    1.主构造器:全局只能有唯一的一个
 *      类本身就是主构造器
 *    2.辅助构造器:可以有任意多个
 *      类中的构造方法就是辅助构造器
 *      函数名与类同名的情况就是一个普通方法，不是构造器
 *      辅助构造器内部必须调用其他辅助构造器或主构造器，最终要调用到主构造器
 */
class Student(val name:String,val age:Int){
  //在类中定义属性必须要给定初始值
//  var name:String = n
//  val age:Int = a

  println("我是主构造器")

  //辅助构造器
  def this(name:String) = {
    this(name,20)
  }

  def study(teacher:String,project:String) = {
    println(s"${name}学习${teacher}老师教的${project}课程")
  }
}


object Demo01_constructor {

  def main(args: Array[String]): Unit = {
    new Student("dick",20)
  }

}
